<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>SYMMETRY: cFuncExpr Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">SYMMETRY
   </div>
   <div id="projectbrief">C++LIBRARYFORSCIENTIFICCOMPUTATION</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classcFuncExpr.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classcFuncExpr-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">cFuncExpr Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="func__expr_8h_source.html">func_expr.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for cFuncExpr:</div>
<div class="dyncontent">
<div class="center"><img src="classcFuncExpr__coll__graph.png" border="0" usemap="#cFuncExpr_coll__map" alt="Collaboration graph"/></div>
<map name="cFuncExpr_coll__map" id="cFuncExpr_coll__map">
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a71288f1b0941126d468680a2a65fcab7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71288f1b0941126d468680a2a65fcab7"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>cFuncExpr</b> (expr_type univar_func)</td></tr>
<tr class="separator:a71288f1b0941126d468680a2a65fcab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7843efed00c4ad1d5c63a9a67f735b6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7843efed00c4ad1d5c63a9a67f735b6c"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>cFuncExpr</b> (operation_type operation, expr_type univar_func1, expr_type univar_func2)</td></tr>
<tr class="separator:a7843efed00c4ad1d5c63a9a67f735b6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad66bab49b10724c06c928c7f44c1c2e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad66bab49b10724c06c928c7f44c1c2e4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>cFuncExpr</b> (const <a class="el" href="classcFuncExpr.html">cFuncExpr</a> &amp;func_expr)</td></tr>
<tr class="separator:ad66bab49b10724c06c928c7f44c1c2e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa08ea2f08807f5b4b117c67d4661af28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa08ea2f08807f5b4b117c67d4661af28"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>cFuncExpr</b> (<a class="el" href="classcFuncExpr.html">cFuncExpr</a> &amp;&amp;func_expr)</td></tr>
<tr class="separator:aa08ea2f08807f5b4b117c67d4661af28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16da4fe524fb54c6b303cd1c1249b80f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16da4fe524fb54c6b303cd1c1249b80f"></a>
<a class="el" href="classcFuncExpr.html">cFuncExpr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classcFuncExpr.html">cFuncExpr</a> &amp;func_expr)</td></tr>
<tr class="separator:a16da4fe524fb54c6b303cd1c1249b80f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65cdfa6f9d59359de29e7268b4e3eef5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65cdfa6f9d59359de29e7268b4e3eef5"></a>
<a class="el" href="classcFuncExpr.html">cFuncExpr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classcFuncExpr.html">cFuncExpr</a> &amp;&amp;func_expr)</td></tr>
<tr class="separator:a65cdfa6f9d59359de29e7268b4e3eef5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45aa9930e7835d9a5fa2ba11a2699db9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45aa9930e7835d9a5fa2ba11a2699db9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="classcFuncExpr.html">cFuncExpr</a> &amp;fnc_expr) const </td></tr>
<tr class="separator:a45aa9930e7835d9a5fa2ba11a2699db9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a169fe0532649d76e93c803ac850c764a"><td class="memItemLeft" align="right" valign="top">operation_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a169fe0532649d76e93c803ac850c764a">getOperation</a> () const </td></tr>
<tr class="separator:a169fe0532649d76e93c803ac850c764a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0baf68ae9b7a1402a631eed6a1ff09b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0baf68ae9b7a1402a631eed6a1ff09b4"></a>
expr_type&#160;</td><td class="memItemRight" valign="bottom"><b>getLHSExpression</b> () const </td></tr>
<tr class="separator:a0baf68ae9b7a1402a631eed6a1ff09b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0233b69abbaf1bf2090f74e124d5ba8d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0233b69abbaf1bf2090f74e124d5ba8d"></a>
expr_type&#160;</td><td class="memItemRight" valign="bottom"><b>getRHSExpression</b> () const </td></tr>
<tr class="separator:a0233b69abbaf1bf2090f74e124d5ba8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a418cd662a3e19f7af280c6359cb55e07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a418cd662a3e19f7af280c6359cb55e07"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setOperation</b> (const operation_type &amp;op)</td></tr>
<tr class="separator:a418cd662a3e19f7af280c6359cb55e07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cf0fedd521acb4eaa4964a361fe89b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7cf0fedd521acb4eaa4964a361fe89b3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setLHSExpression</b> (const expr_type &amp;expr)</td></tr>
<tr class="separator:a7cf0fedd521acb4eaa4964a361fe89b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f1404af450d7d475047f050895d8723"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f1404af450d7d475047f050895d8723"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setRHSExpression</b> (const expr_type &amp;expr)</td></tr>
<tr class="separator:a1f1404af450d7d475047f050895d8723"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4a25067ca6be3db2ba9e95501d136a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classcVariable.html">cVariable</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#aac4a25067ca6be3db2ba9e95501d136a">getVariables</a> () const </td></tr>
<tr class="separator:aac4a25067ca6be3db2ba9e95501d136a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e4d0890110908c3cfe17f390016074b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a1e4d0890110908c3cfe17f390016074b">simplify</a> ()</td></tr>
<tr class="separator:a1e4d0890110908c3cfe17f390016074b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f38c136189c0af3e361e4af67524664"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a4f38c136189c0af3e361e4af67524664">trig_simplify</a> ()</td></tr>
<tr class="separator:a4f38c136189c0af3e361e4af67524664"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54fb36206df1ca39175c4ef914f9b671"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a54fb36206df1ca39175c4ef914f9b671">expand</a> ()</td></tr>
<tr class="separator:a54fb36206df1ca39175c4ef914f9b671"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af00d2b6a18cea571adeebd1e8d986d6e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#af00d2b6a18cea571adeebd1e8d986d6e">factor</a> ()</td></tr>
<tr class="separator:af00d2b6a18cea571adeebd1e8d986d6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c783da6cbbff4ab740d830a4b14cfd6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c783da6cbbff4ab740d830a4b14cfd6"></a>
<a class="el" href="classcFuncExpr.html">cFuncExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><b>derivative</b> () const </td></tr>
<tr class="separator:a7c783da6cbbff4ab740d830a4b14cfd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc82c5fcb2cc98fdc8a6ec376a0e76d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcFuncExpr.html">cFuncExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#acc82c5fcb2cc98fdc8a6ec376a0e76d7">partial_derivative</a> (const <a class="el" href="classcVariable.html">cVariable</a> &amp;var) const </td></tr>
<tr class="separator:acc82c5fcb2cc98fdc8a6ec376a0e76d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cc206609ae5661f8975c3b71a50c530"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cc206609ae5661f8975c3b71a50c530"></a>
<a class="el" href="classcFuncExpr.html">cFuncExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><b>primitive</b> () const </td></tr>
<tr class="separator:a0cc206609ae5661f8975c3b71a50c530"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6651f4e191ec2dbbdfd053ef7a06fa15"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a6651f4e191ec2dbbdfd053ef7a06fa15">substitute</a> (const <a class="el" href="classcVariable.html">cVariable</a> &amp;var1, const <a class="el" href="classcVariable.html">cVariable</a> &amp;var2)</td></tr>
<tr class="separator:a6651f4e191ec2dbbdfd053ef7a06fa15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94a97933bf6508590d2a5bdd5d953632"><td class="memItemLeft" align="right" valign="top">expr_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a94a97933bf6508590d2a5bdd5d953632">operator()</a> (const <a class="el" href="classcVariable.html">cVariable</a> &amp;var, double arg) const </td></tr>
<tr class="separator:a94a97933bf6508590d2a5bdd5d953632"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f827c4d0d44e4a890129317d0568dfd"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::tuple<br class="typebreak"/>
&lt; double, double, double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a7f827c4d0d44e4a890129317d0568dfd">plotPoints</a> (double min, double max, double increment) const </td></tr>
<tr class="separator:a7f827c4d0d44e4a890129317d0568dfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a210c6958768883486f404c21bed9b53b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a210c6958768883486f404c21bed9b53b">printTree</a> (const expr_type *root=nullptr) const </td></tr>
<tr class="separator:a210c6958768883486f404c21bed9b53b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac68cde87cc0284d6f750a9b0d7f220a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac68cde87cc0284d6f750a9b0d7f220a9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>printOp</b> () const </td></tr>
<tr class="separator:ac68cde87cc0284d6f750a9b0d7f220a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a80a2b818fdf41356c390d7d5acfae2b9"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::tuple<br class="typebreak"/>
&lt; double, double, double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcFuncExpr.html#a80a2b818fdf41356c390d7d5acfae2b9">plotLine</a> (std::size_t pos, double var, double min, double max, double increment, bool fixed=false) const </td></tr>
<tr class="separator:a80a2b818fdf41356c390d7d5acfae2b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75cfcc14129d9fe761796af5c99a2c0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75cfcc14129d9fe761796af5c99a2c0c"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>getValue</b> (const expr_type &amp;expr) const </td></tr>
<tr class="separator:a75cfcc14129d9fe761796af5c99a2c0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a198c337af0292c7fafef007801cfee3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a198c337af0292c7fafef007801cfee3a"></a>
operation_type&#160;</td><td class="memItemRight" valign="bottom"><b>m_Operation</b></td></tr>
<tr class="separator:a198c337af0292c7fafef007801cfee3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a678206897a682b72a34a6e1176e47592"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a678206897a682b72a34a6e1176e47592"></a>
expr_type&#160;</td><td class="memItemRight" valign="bottom"><b>m_LHSExpr</b></td></tr>
<tr class="separator:a678206897a682b72a34a6e1176e47592"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4acff93f9a21a7b5c472b9a0202acd5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4acff93f9a21a7b5c472b9a0202acd5"></a>
expr_type&#160;</td><td class="memItemRight" valign="bottom"><b>m_RHSExpr</b></td></tr>
<tr class="separator:ae4acff93f9a21a7b5c472b9a0202acd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:ae37b92d9226a688089d270228c442608"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae37b92d9226a688089d270228c442608"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>cExprDiffVisitor</b></td></tr>
<tr class="separator:ae37b92d9226a688089d270228c442608"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6ab9d0d611acf7a332d381f703796e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6ab9d0d611acf7a332d381f703796e6"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>cExprPartDiffVisitor</b></td></tr>
<tr class="separator:aa6ab9d0d611acf7a332d381f703796e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fc7bf9f80422eb5d9255b49005b24b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fc7bf9f80422eb5d9255b49005b24b6"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>cDiffVisitor</b></td></tr>
<tr class="separator:a9fc7bf9f80422eb5d9255b49005b24b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53892c389b88a764b4b9c5385980f348"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53892c389b88a764b4b9c5385980f348"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>cSimplifyVisitor</b></td></tr>
<tr class="separator:a53892c389b88a764b4b9c5385980f348"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08e7e27ba55da95f22853e6bfa89484e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a08e7e27ba55da95f22853e6bfa89484e"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a08e7e27ba55da95f22853e6bfa89484e"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>cEvalExprlVisitor</b></td></tr>
<tr class="separator:a08e7e27ba55da95f22853e6bfa89484e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2a8569148682f5f2a6226e47ed2e3ec"><td class="memTemplParams" colspan="2"><a class="anchor" id="af2a8569148682f5f2a6226e47ed2e3ec"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:af2a8569148682f5f2a6226e47ed2e3ec"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>cEvalVisitor</b></td></tr>
<tr class="separator:af2a8569148682f5f2a6226e47ed2e3ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa0d90351f14b880688cece98cc467c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa0d90351f14b880688cece98cc467c7"></a>
std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;&lt;</b> (std::ostream &amp;out, const <a class="el" href="classcFuncExpr.html">cFuncExpr</a> &amp;func_expr)</td></tr>
<tr class="separator:aaa0d90351f14b880688cece98cc467c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>holds a compound function expression (i.e. (sin(x) + e^x)*cos(x)) implements the 'symbolic' functionality </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a54fb36206df1ca39175c4ef914f9b671"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cFuncExpr::expand </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>expand multiplications and powers removing paranthesis </p>

</div>
</div>
<a class="anchor" id="af00d2b6a18cea571adeebd1e8d986d6e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cFuncExpr::factor </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>try to factor expression </p>

</div>
</div>
<a class="anchor" id="a169fe0532649d76e93c803ac850c764a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">operation_type cFuncExpr::getOperation </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>setters and getters </p>

</div>
</div>
<a class="anchor" id="aac4a25067ca6be3db2ba9e95501d136a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; <a class="el" href="classcVariable.html">cVariable</a> &gt; cFuncExpr::getVariables </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>returns a vector containing all the variables used in expression </p>

</div>
</div>
<a class="anchor" id="a94a97933bf6508590d2a5bdd5d953632"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">expr_type cFuncExpr::operator() </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcVariable.html">cVariable</a> &amp;&#160;</td>
          <td class="paramname"><em>var</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>arg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>evaluates the expression by substituting the variable with the given value an exception is thrown if the substitution fails </p>

</div>
</div>
<a class="anchor" id="acc82c5fcb2cc98fdc8a6ec376a0e76d7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcFuncExpr.html">cFuncExpr</a> cFuncExpr::partial_derivative </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcVariable.html">cVariable</a> &amp;&#160;</td>
          <td class="paramname"><em>var</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>compute the partial derivative with respect to the given variable </p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classcFuncExpr_acc82c5fcb2cc98fdc8a6ec376a0e76d7_cgraph.png" border="0" usemap="#classcFuncExpr_acc82c5fcb2cc98fdc8a6ec376a0e76d7_cgraph" alt=""/></div>
<map name="classcFuncExpr_acc82c5fcb2cc98fdc8a6ec376a0e76d7_cgraph" id="classcFuncExpr_acc82c5fcb2cc98fdc8a6ec376a0e76d7_cgraph">
<area shape="rect" id="node2" href="classcFuncExpr.html#a1e4d0890110908c3cfe17f390016074b" title="cFuncExpr::simplify" alt="" coords="187,12,327,39"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a80a2b818fdf41356c390d7d5acfae2b9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; std::tuple&lt; double, double, double &gt; &gt; cFuncExpr::plotLine </td>
          <td>(</td>
          <td class="paramtype">std::size_t&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>var</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>increment</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>fixed</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>returns the graph if the function has only 1 variable the first and second argument specify which variable is already computed and its value &ndash; used in plotPoints </p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classcFuncExpr_a80a2b818fdf41356c390d7d5acfae2b9_cgraph.png" border="0" usemap="#classcFuncExpr_a80a2b818fdf41356c390d7d5acfae2b9_cgraph" alt=""/></div>
<map name="classcFuncExpr_a80a2b818fdf41356c390d7d5acfae2b9_cgraph" id="classcFuncExpr_a80a2b818fdf41356c390d7d5acfae2b9_cgraph">
<area shape="rect" id="node2" href="classcFuncExpr.html#aac4a25067ca6be3db2ba9e95501d136a" title="cFuncExpr::getVariables" alt="" coords="198,5,370,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a7f827c4d0d44e4a890129317d0568dfd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; std::tuple&lt; double, double, double &gt; &gt; cFuncExpr::plotPoints </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>min</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>increment</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>plots the functional expression using the plotLine function can be used only for expressions with one or two variables </p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classcFuncExpr_a7f827c4d0d44e4a890129317d0568dfd_cgraph.png" border="0" usemap="#classcFuncExpr_a7f827c4d0d44e4a890129317d0568dfd_cgraph" alt=""/></div>
<map name="classcFuncExpr_a7f827c4d0d44e4a890129317d0568dfd_cgraph" id="classcFuncExpr_a7f827c4d0d44e4a890129317d0568dfd_cgraph">
<area shape="rect" id="node2" href="classcFuncExpr.html#aac4a25067ca6be3db2ba9e95501d136a" title="cFuncExpr::getVariables" alt="" coords="419,5,591,32"/><area shape="rect" id="node3" href="classcFuncExpr.html#a80a2b818fdf41356c390d7d5acfae2b9" title="cFuncExpr::plotLine" alt="" coords="219,31,363,57"/><area shape="rect" id="node4" href="classcFuncExpr.html#a94a97933bf6508590d2a5bdd5d953632" title="cFuncExpr::operator()" alt="" coords="211,81,370,108"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a210c6958768883486f404c21bed9b53b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cFuncExpr::printTree </td>
          <td>(</td>
          <td class="paramtype">const expr_type *&#160;</td>
          <td class="paramname"><em>root</em> = <code>nullptr</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>prints func expr as tree structure &ndash;for debugging purposes </p>

</div>
</div>
<a class="anchor" id="a1e4d0890110908c3cfe17f390016074b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cFuncExpr::simplify </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>siplifies the expression by partially evaluating subexpressions </p>

</div>
</div>
<a class="anchor" id="a6651f4e191ec2dbbdfd053ef7a06fa15"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cFuncExpr::substitute </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcVariable.html">cVariable</a> &amp;&#160;</td>
          <td class="paramname"><em>var1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcVariable.html">cVariable</a> &amp;&#160;</td>
          <td class="paramname"><em>var2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>substitute var1 with var2 in expression recursively </p>

</div>
</div>
<a class="anchor" id="a4f38c136189c0af3e361e4af67524664"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cFuncExpr::trig_simplify </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>siplifies the expression by matching trigonometric identities </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="func__expr_8h_source.html">func_expr.h</a></li>
<li>func_expr.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classcFuncExpr.html">cFuncExpr</a></li>
    <li class="footer">Generated on Tue Feb 25 2014 17:11:52 for SYMMETRY by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
  </ul>
</div>
</body>
</html>
